package com.demo.java.OD151_200.OD182;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【异常的打卡记录】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145862919
 */
public class OdMain {
    public static void main(String[] args) {
        try (Scanner s = new Scanner(System.in)) {
            int n = s.nextInt();
            s.nextLine();
            String[] r = new String[n];
            for (int i = 0; i < n; ++i) {
                r[i] = s.nextLine();
            }
            String res = solve(r);
            System.out.println(res);
        }
    }

    private static String solve(String[] r) {
        // 将打卡记录转为列表
        ArrayList<String> l = IntStream.range(0, r.length)
                .mapToObj(i -> r[i])
                .collect(Collectors.toCollection(ArrayList::new));

        // 存储已处理的记录
        HashSet<String> processed = new HashSet<>();
        StringBuilder b = new StringBuilder();

        // 过滤出异常记录
        l.stream()
                .filter(c -> {
                    String[] s = c.split(",");
                    String a = s[3]; // 实际设备编号
                    String reg = s[4]; // 注册设备编号
                    int t = Integer.parseInt(s[1]); // 时间
                    int d = Integer.parseInt(s[2]); // 距离
                    return !reg.equals(a) // 设备编号不一致
                            || processed.contains(c) // 已处理过的记录
                            || l.stream()
                            .anyMatch(tmp -> {
                                if (tmp.equals(c)) {
                                    return false;
                                }
                                String[] tmpSplit = tmp.split(",");
                                int t2 = Integer.parseInt(tmpSplit[1]);
                                int d2 = Integer.parseInt(tmpSplit[2]);
                                // 判断时间差小于 60 分钟且距离差大于 5 千米
                                return Math.abs(t - t2) < 60 && Math.abs(d - d2) > 5;
                            });
                })
                .forEach(c -> {
                    processed.add(c);
                    b.append(c).append(";"); // 拼接异常记录
                });

        // 如果没有异常记录，返回 "null"
        return b.length() == 0 ? "null" : b.substring(0, b.length() - 1);
    }
}